The invention relates to apparatus and methods for receiving high speed serial data arranged in rows from a scanner and performing filtering operations on each pixel based on the states of a neighborhood of pixels surrounding that pixel, and more particularly to such a device that is capable of serially outputting filtered data or pixels at the same rate that unfiltered pixels or data are received.
In various applications, high speed serial data arranged in rows to form pages or screens is produced by a serial scanner that scans the rows and outputs the data serially. For example, a CCD (charged coupled device) or a video scanner may produce serial pixel data at a 10 MHz rate. Each row of scanned data may include, for example, 1000 pixels followed by an "end of row" signal, and after, for example, 1000 rows have been scanned, an "end of page" or end of screen signal may be produced. Each pixel code may be a logical "0", representing a light area or a logical "1" indicating a dark area, or each pixel code may be a multi-bit code representing a wide range of colors, from transparent through black.
A major problem faced in some applications is how to deal with "noise", i.e., extraneous spots or irregularities of the surface or item being scanned. It is very desirable to be able to filter such noise information out of the pixel data.
In the field of image enhancement of video signals received from communications satellites, for example, a technique for filtering the pixel data involves processing a high speed string of serial pixel codes by feeding them into a high speed computer, and executing filtering algorithms that examine three pixel by three pixel neighborhoods as they would appear on a display screen. FIG. 1 shows a simplified screen of data in which P1, P2, P3, etc., represent pixel codes that are serially output. In the example of FIG. 1, each row includes 100 pixels, and each page or screen includes 100 rows, although in many applications there typically would be 3400 pixel codes per row, and 3400 rows per page or screen.
In FIG. 2, reference numeral 2 designates a three by three pixel neighborhood centered about a "present" or "object" pixel P'i. The above-mentioned filtering algorithm produces a new filtered value of P'i based on the values of neighborhood pixels surrounding P'i within the solid line designating the neighborhood 2. Next, the neighborhood 2 shifts one pixel to right, as indicated by the dotted lines 3, and the object pixel would become P'5, and its filtered value, based on the eight surrounding neighborhood pixels, would be computed by the filtering algorithm.
In determining the filtered value for P'i, the algorithm takes a suitable weighted average of all nine pixel codes within neighborhood 2. Then, the neighborhood 2 is moved one pixel to the right, as indicated by dotted lines 3, and the filtering alogrithm is re-executed for the object pixel in the center of that neighborhood 3. This procedure of shifting the object neighborhood by one pixel and computing a new weighted average for the object pixel thereof is repeated for every incoming pixel code to obtain the filtered pixel code values, which then are serially output to a conventional display memory or the like. The filtered pixel codes then are serially fed from the display memory to a display screen so that a filtered image appears without the above-mentioned extraneous noise images picked up by the scanning apparatus.
A problem with the above-described technique is that the execution of the filtering algorithm by a computer is very time consuming. Each of the nine pixel codes in each neighborhood has to be accessed at least once, and this must be done sequentially, since random access memories need to be accessed one location at a time. In addition to the nine computer memory cycles required to simply fetch the nine pixel codes in each neighborhood, additional computer instruction cycles are required to execute whatever filtering algorithm is applied to the present neighborhood. Since the data rate of serial pixel input data usually is very high, for example 10 MHz, if filtered pixels are to be output as fast as unfiltered pixels are input, i.e., at 10 MHz, memory cycle rates of the order of 100 MHz would be required, which is impossible at the present state-of-the-art, at least if low cost commercially available microprocessors are to be utilized to execute the filtering algorithms.
The state-of-the-art is generally indicated in U.S. Pat. Nos. 4,484,349 (McCubbrey), 4,426,629 (Fouse), 4,363,104 (Nussemeier), 4,510,618 (Ataman et al), 4,506,382 (Hada et al), 4,499,598 (Chitineni), 4,499,597 (Alves), 4,398,256 (Nussemeier et al), 4,389,677 (Rushby et al), and 3,737,855 (Cutaia), and the publication "Real-Time Image Enhancement Using 3.times.3 Pixel Neighborhood Operator Functions" by Hall and Awtrey, Optical Engineering, May/June, 1980, Vol. 19 No. 3, Page 421.
It would be highly desirable to provide a low cost, primarily hardware (rather than primarily software) system for receiving high speed serial pixel data from a scanner, operating on successive adjacent three pixel by three pixel neighborhoods, and outputting filtered pixels at the same rate that the unfiltered pixels are serially input by the scanner. It also would be advantageous to have the capability of applying different filtering algorythms to different neighborhoods or groups of neighborhoods by simply supplying suitable filter selection signals.